## 集合
"""
集合（set）是一个无序的不重复元素序列。
可以使用大括号 { } 或者 set() 函数创建集合，注意：创建一个空集合必须用 set() 而不是 { }，因为 { } 是用来创建一个空字典。
"""

backet = {'apple','orange','apple','pear','orange','banana'}
print(backet)

a = set('abracadabra')
b = set('alacazam')
print(a) #集合不重复元素
print(b)
print(a - b) #相同元素去除，留下不同元素
print(a|b) #合并所有元素，但相同元素不重复出现
print(a&b) #只出现相同元素
print(a^b) #只出现不同元素

## 集合的交、并、差、子集、对称差集
list_1 = [1,2,5,6,7,2,3,2,4,4]
list_2 = set(list_1)
list_3 = set([1,3,4,0,8,66,7])

print("list_2:",list_2,"\n",type(list_2))
print("list_3:",list_3)

#  交集
print(list_2.intersection(list_3))
print(list_2 & list_3)

#  并集
print(list_2.union(list_3))
print(list_2|list_3)

#  差集
print(list_2.difference(list_3))
print(list_2 - list_3)

print(list_3.difference(list_2))
print(list_3 - list_2)

#  子集
print(list_2.issubset(list_3))  #子集
print(list_2.issuperset(list_3))  #父集
list_4 = set([2,3])
print(list_4.issubset(list_2))

#  对称差集
print(list_2.symmetric_difference(list_3))

## 集合的增、删、改
"""
* set.pop()
* set.remove()
* set.discard()
* set.copy()
* set.clear()
"""
list_3 = set([1,3,4,0,8,66,7])
list_3.pop()   # pop() 方法用于随机移除一个元素。
print(list_3)

# list_3.clear()  #清空
# print(list_3)

list_3.remove(3)
print(list_3)

list_3.add(5)
print(list_3)

list_3.discard(9)  #该方法不同于 remove() 方法，因为 remove() 方法在移除一个不存在的元素时会发生错误，而 discard() 方法不会。
print(list_3)

list_4 = list_3.copy()
print(list_4)